#!/bin/bash
# Tento skript získá z dublin core datastreamu autora a název titulu. 
# Z nich a dále napevno dané hodnoty SUBJECT a COPYRIGHT vstupní infoset.
# Ten pak slouží k aktualizaci metadat pdf za pomocí nástroje pdftk.
# Jsou zachovány kopie původních pdf, ta s aktualizovanými metadaty mají příponu .fixed.pdf
# Nakonec je vytvořeno mapování uuid monografií na soubory obsahující aktualizovaná pdf
# To je pak použito v javovém programu, který aktualizuje datastreamy objektů ve Fedoře 
# (aktualizaci datastreamů provádí ImageLinkFixer akcí PdfFixer


##################
# Pomocné funkce #
##################

function createInfoset(){
#DATADIR="/home/rehan/knizky_mlp/foxml_z_knav_s_datastreamy/9788020018649_GREBENICKOVA_Machovske_studie"
DATADIR=$1
echo datadir: $DATADIR
OUT="${DATADIR}/pdftk-infoset.in" 
#OUT="${DATADIR}pdftk-infoset.in" 
FOXML=`ls ${DATADIR}/*.xml`
#FOXML=`ls ${DATADIR}*.xml`
echo foxml: $FOXML
echo infoset: $OUT

if [ -f $OUT ]
then
  rm $OUT
  echo REMOVING OLD INFOSET
fi

echo "InfoKey: Author" >>$OUT
echo "InfoValue: `xml_grep -t //dc:creator $FOXML`" >>$OUT

echo "InfoKey: Title" >>$OUT
echo "InfoValue: `xml_grep -t //dc:title $FOXML`" >>$OUT

echo "InfoKey: Subject" >>$OUT
echo "InfoValue: BOA001 - Moravská zemská knihovna v Brně + Nakladatelství Academia" >>$OUT

echo "InfoKey: copyright" >>$OUT
echo "InfoValue: BOA001 - Moravská zemská knihovna v Brně + Nakladatelství Academia" >>$OUT

cat $OUT
echo INFOSET CREATED
}

function updatePdf(){
   DATADIR=$1
   echo REMOVING PREVIOUSLY FIXED PDF
   rm ${DATADIR}/*.fixed.pdf
   PDF=`ls ${DATADIR}/*.pdf`
   INFOSET="${DATADIR}/pdftk-infoset.in"
   PDF_FIXED=${PDF}.fixed.pdf
   echo "pdf: $PDF"
   echo "infoset: $INFOSET"
   echo "fixed pdf: $PDF_FIXED"
   echo CREATING FIXED PDF $PDF_FIXED
   CMD="pdftk $PDF update_info_utf8 $INFOSET output ${PDF_FIXED}"
#   echo $CMD
   $CMD
}

function extractUuidFileMapping(){
 PDF=`ls ${DATADIR}/*.fixed.pdf`
 FOXML=`ls ${DATADIR} | grep .xml`
# echo foxml: $FOXML
 UUID=${FOXML%%.xml}
# echo uuid: $UUID
 MAPPING=${UUID}:${PDF} >>$MAPPING_FILE
 echo $MAPPING
 echo $MAPPING >>$MAPPING_FILE
}


###################
# Samotný skript #
###################

MAPPING_FILE=./mapping.txt
if [ -f $MAPPING_FILE ]
then
 rm $MAPPING_FILE
fi

for DATADIR in $1/*;
do
 if [ -d $DATADIR ]
 then
   echo DATADIR: $DATADIR

   echo CREATING INFOSETS
   createInfoset $DATADIR

   echo UPDATING PDF
   updatePdf $DATADIR

   echo "EXTRACTING uuid->file mapping"
   extractUuidFileMapping $DATADIR
   #break
 fi
done
